/**
 * Cette classe représente l'état d'un passager dans un transport en commun.
 * Il y a un état à l'exterieur du transport (dehors) et deux états à 
 * l'intérieur (assis, debout).
 *  
 * Les instances de cette classe sont des objets constants.
 *
 * @author Georgy
 * @since 2007-2008
 **/

package tec;

class EtatPassager {
	private final Etat monEtat;

	private static final EtatPassager Debout = new EtatPassager (Etat.DEBOUT);
 
	private static final EtatPassager Assis = new EtatPassager (Etat.ASSIS);

	private static final EtatPassager Dehors = new EtatPassager (Etat.DEHORS);

	/**
	 * Construit une instance en précisant l'état du passager.
	 * 
	 * @param e  valeur de l'état.
	 */
	private EtatPassager(Etat e) {
		monEtat = e;
	}

	public static EtatPassager Debout () {
		return Debout;
	}

	public static EtatPassager Assis () {
		return Assis;
	}

	public static EtatPassager Dehors () {
		return Dehors;
	}

	/**
	* Le passager est-il à l'extérieur du transport ?
	*
	* @return vrai si instanciation avec DEHORS;
	*/
	public boolean estExterieur() {
		return monEtat == Etat.DEHORS;
	}

	/**
	* Le passager est-il assis à l'intérieur du transport ?
	*
	* @return vrai si instanciation avec ASSIS;
   */
	public boolean estAssis() {
		return monEtat == Etat.ASSIS;
	}

	/**
	* Le passager est-il debout à l'intérieur du transport ?
	*
	* @return vrai si instanciation avec DEBOUT;
	*/
	public boolean estDebout() {
		return monEtat == Etat.DEBOUT;
	}

	/**
	* Le passager est-il a l'intérieur du transport ?
	*
	* @return vrai si instanciation avec ASSIS ou DEBOUT.
	*/
	public boolean estInterieur() {
		return monEtat != Etat.DEHORS;
	}

	/**
   * Cette méthode est heritée de la classe {@link java.lang.Object}.
   * Très utile pour le débogage, elle permet de fournir une 
   * chaîne de caractères correspondant à l'état d'un objet.
   * <p> Un code par défaut est définit dans 
   * {@link java.lang.Object#toString() la classe Object} 
   * Il faut adapter (redéfinir) le code de cette méthode à chaque classe.
   *
   * Pour les chaînes de cararctères, l'opérateur + correspond a la concaténation. 
   */
	@Override
	public String toString() {
		return "<" + monEtat.toString () + ">";
	}
}




